package gxdlxy.zx2201.animal;

/* TODO
 * 1 包含抽象方法的类必须要是抽象类
 * 2 抽象类和抽象方法都要使用abstract修饰
 * 3 抽象方法只需声明，不需要实现
 * 4 如果一个类继承了抽象类，那么该类的子类必须实现抽象类中的全部抽象方法
 * */
public class Animal {
    void shout() {
    }

    ; // 抽象方法的声明，不需要实现

    public static void main(String[] args) {

        Animal 动物1 = new Cat();
        Animal 动物2 = new Dog();
        Animal 动物3 = new Dock();
        Animal 动物4 = new Chicken();
        Animal 动物5 = new Monkey();
        动物1.shout();
    }
}

class Cat extends Animal {
    void shout() {
        System.out.println("喵");
    }
    void catch_mouse() {
        System.out.println("抓老鼠");
    }
}

class Dog extends Animal {
    void shout() {
        System.out.println("汪");
    }
}

class Chicken extends Animal {
    void shout() {
        System.out.println("咯");
    }
}

class Dock extends Animal {
    void shout() {
        System.out.println("嘎");
    }
}

class Monkey extends Animal {
    void shout() {
        System.out.println("抽象方法在子类中必须要被实现");
    }
}